﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using DataAnnotationsExtensions;
using System.Web.Mvc;

namespace JPSOFTWARE.BON.Modelos
{
    public class UsuarioRegistrarModel
    {
        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Nome*")]
        [StringLength(100, ErrorMessage = "Execedeu número de caracteres.")]
        public string Nome { get; set; }

        //[Required(ErrorMessage = "Obrigatório.")]
        //[Display(Name = "CPF*")]
        //[StringLength(14, ErrorMessage = "Execedeu número de caracteres.")]
        //[Remote("VerificaSeExisteCPF", "Usuario", HttpMethod = "POST", ErrorMessage = "CPF já cadastrado no sistema")]
        //public string Cpf { get; set; }

        //[Required(ErrorMessage = "Obrigatório.")]
        //[Display(Name = "Endereço*")]
        //[StringLength(255, ErrorMessage = "Execedeu número de caracteres.")]
        //[DataType(DataType.MultilineText)]
        //public string Endereco { get; set; }

        //[Required(ErrorMessage = "Obrigatório.")]
        //[DataType(DataType.PhoneNumber, ErrorMessage = "Número de telefone inválido")]
        //[StringLength(13, ErrorMessage = "Execedeu número de caracteres.")]
        //[Display(Name = "Telefone*")]
        //public string Telefone { get; set; }

        //[Required(ErrorMessage = "Obrigatório.")]
        //[DataType(DataType.PhoneNumber, ErrorMessage = "Número de telefone inválido")]
        //[StringLength(13, ErrorMessage = "Execedeu número de caracteres.")]
        //[Display(Name = "Celular*")]
        //public string Celular { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Remote("VerificaSeExisteEmail", "Usuario", HttpMethod = "POST", ErrorMessage = "E-mail já cadastrado no sistema")]        
        [Email(ErrorMessage="Email inválido.")]
        [Display(Name = "E-mail*")]
        [StringLength(100, ErrorMessage = "Execedeu número de caracteres.")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(8, ErrorMessage = "Execedeu número de caracteres.")]
        [DataType(DataType.Password)]
        [Display(Name = "Senha*")]
        public string Senha { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(8, ErrorMessage = "Execedeu número de caracteres.")]
        [DataType(DataType.Password)]
        [Display(Name = "Confirme a senha*")]
        [Compare("Senha", ErrorMessage = "Por favor, confirme a senha.")]
        public string ConfirmaSenha { get; set; }

        [Display(Name = "Ativo")]
        public bool Status { get; set; }

        public DateTime? DataAlteracao { get; set; }

        public bool Ativado { get; set; }

        public int TipoUsuario { get; set; }

        public string Aplicacao { get; set; }
    }

    public class UsuarioEditarModel
    {
        [HiddenInput(DisplayValue = false)]
        public int IdUsuario { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Nome*")]
        [StringLength(100, ErrorMessage = "Nome não pode ser maior que 100 caracteres.")]
        public string Nome { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Email(ErrorMessage = "E-mail inválido.")]
        [Display(Name = "E-mail*")]
        [StringLength(100, ErrorMessage = "E-mail não pode ser maior que 100 caracteres.")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Ativo:")]
        public bool Status { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Data de Alteração:*")]
        public DateTime? DataAlteracao { get; set; }

        public bool Ativado { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Tipo de Usuário:*")]
        public int TipoUsuario { get; set; }

        public string Aplicacao { get; set; }
    }

    public class UsuarioModel
    {
        public int IdUsuario { get; set; }

        public int IdDistribuidora { get; set; }

        public string Nome { get; set; }

        public string Email { get; set; }

        public string Senha { get; set; }

        public string Status { get; set; }

        public int TipoUsuario { get; set; }

        public string Ativado { get; set; }

        public DateTime? DataAlteracao { get; set; }

        public string Aplicacao { get; set; }
    }

    public class UsuarioView
    {
        public int IdUsuario { get; set; }

        public string Nome { get; set; }

        public string Email { get; set; }

        public string Status { get; set; }

        public DateTime DataAlteracao { get; set; }

        public string TipoUsuario { get; set; }
    }

    public class UsuarioDistribuidoraModel
    {
        public int IdUsuario { get; set; }
        public int IdDistribuidora { get; set; }
    }

    public enum RegraUsuarioModel
    {
        Administrador = 1,
        Distribuidora = 2,
        Cliente = 3
    }

    public enum TipoUsuarioModel
    {
        Administrador = 1,
        Usuario = 2        
    }
}